import request from '@/config/axios'

// 课程签到 VO
export interface SignLogVO {
  id: string // 主键
  courseId: number // 课程ID
  startDate: Date // 课程签到开始时间
  endDate: Date // 课程签到结束时间
  lastSignOut: number // 大于签到结束时间多久不允许签退
  lastSignIn: number // 大于签到开始时间多长时间后算迟到,0为不限制(分钟)
  beLate: number // 大于签到开始时间多长时间后算迟到,0为不限制
  assistantCreate: boolean
  isClass: boolean // 是否上课
  remark: string // 备注
}

export interface CourseSignLogListRespVO {
  signLogId: string // 签到记录id
  courseId: string // 课程id
  semester: string // 学期
  name: string // 课程名称
  code: string // 课程编码
  teacher: string // 教师
  assistantCreate: boolean // 是否课代表创建
  classTime: string // 上课时间
  endTime: string // 结束时间
  studentNum: number // 教学班人数
  signInNum: number // 签到人数
  notSignInNum: number // 未签到人数
  beLateNum: number // 迟到人数
  earlyLeaveNum: number // 早退人数
  semesterId: number // 课程学期ID
}

// 课程签到 API
export const SignLogApi = {
  // 查询课程签到分页
  getSignLogPage: async (params: any) => {
    return await request.get({ url: `/course/sign-log/page`, params })
  },

  // 查询课程签到详情
  getSignLog: async (id: number) => {
    return await request.get({ url: `/course/sign-log/get?id=` + id })
  },

  // 新增课程签到 返回signLogId
  createSignLog: async (data: Partial<SignLogVO>) => {
    return await request.post({ url: `/course/sign-log/create`, data })
  },

  // 修改课程签到
  updateSignLog: async (data: SignLogVO) => {
    return await request.put({ url: `/course/sign-log/update`, data })
  },

  // 删除课程签到
  deleteSignLog: async (id: number) => {
    return await request.delete({ url: `/course/sign-log/delete?id=` + id })
  },

  // 导出课程签到 Excel
  exportSignLog: async (params) => {
    return await request.download({ url: `/course/sign-log/export-excel`, params })
  },

  // 教师签到记录列表
  listSignLog: async (params: any) => {
    return await request.get({ url: `/course/sign-log/list`, params })
  },

  // 当前时间是否有正在进行的二维码
  checkSignLog: async (courseId: number) => {
    return await request.get({ url: `/course/sign-log/check?courseId=` + courseId })
  },

  // 刷新二维码
  refreshQrCode: async (signLogId: string) => {
    return await request.post({ url: `/course/sign-log/refresh-qrcode?id=${signLogId}` })
  }
}
